package com.meituan.sdk.model.pms.priceinve.getAvailableRooms;

import com.meituan.sdk.annotations.ApiMeta;
import java.util.List;
import com.google.gson.reflect.TypeToken;
import javax.validation.constraints.NotBlank;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;

/**
* 获取酒店可用房间（全天房）
* This file was automatically generated.
*/
@ApiMeta(
    path = "/pms/priceinve/getAvailableRooms",
    businessId = 57,
    apiVersion = "10006",
    apiName = "get_available_rooms",
    needAuth = true
)
public class GetAvailableRoomsRequest implements MeituanRequest<GetAvailableRoomsResponse> {
    /**
    * <p data-diff-id="ct-diff-id-90df07e8-0a7f-4174-8f92-6c095acbe72c"><span style="color: rgba(0, 0, 0, 0.65)">酒店ID</span></p>
    */
    @NotNull(message = "hotelId不能为空")
    @SerializedName("hotelId")
    private Long hotelId;
    /**
    * <p data-diff-id="ct-diff-id-72d6f0b6-2c62-42f1-bf49-bffe6c476cf4"><span style="color: rgba(0, 0, 0, 0.65)">房型编号列表</span></p>
    */
    @SerializedName("roomTypeIds")
    private List<String> roomTypeIds;
    /**
    * <p data-diff-id="ct-diff-id-f191e110-13e6-46fb-9aec-08f6f57e8644">预抵时间，格式yyyy-MM-dd HH:mm:ss</p>
    */
    @NotBlank(message = "estimatedArriveTime不能为空")
    @SerializedName("estimatedArriveTime")
    private String estimatedArriveTime;
    /**
    * <p data-diff-id="ct-diff-id-724f9686-6452-4b02-9e5b-b746f462970a">预离时间，格式yyyy-MM-dd HH:mm:ss</p>
    */
    @NotBlank(message = "estimatedDepartureTime不能为空")
    @SerializedName("estimatedDepartureTime")
    private String estimatedDepartureTime;
    /**
    * <p data-diff-id="ct-diff-id-070a067c-8480-45d6-bbeb-61c3d579c2dc"><span style="color: rgba(0, 0, 0, 0.65)">房态，房态编码详见RoomStatus房态枚举</span></p>
    */
    @SerializedName("roomStatus")
    private List<String> roomStatus;
    /**
    * <p data-diff-id="ct-diff-id-348b0874-bcf2-430d-8c2b-f8f509d2965a"><span style="color: rgba(0, 0, 0, 0.65)">楼栋ID列表</span></p>
    */
    @SerializedName("hallIds")
    private List<Long> hallIds;
    /**
    * <p data-diff-id="ct-diff-id-a92cea76-6079-44a2-bb1a-23a91f7c9e69">楼层ID列表</p>
    */
    @SerializedName("floorIds")
    private List<Long> floorIds;

    public Long getHotelId() {
        return hotelId;
    }
    public void setHotelId(Long hotelId) {
        this.hotelId = hotelId;
    }
    public List<String> getRoomTypeIds() {
        return roomTypeIds;
    }
    public void setRoomTypeIds(List<String> roomTypeIds) {
        this.roomTypeIds = roomTypeIds;
    }
    public String getEstimatedArriveTime() {
        return estimatedArriveTime;
    }
    public void setEstimatedArriveTime(String estimatedArriveTime) {
        this.estimatedArriveTime = estimatedArriveTime;
    }
    public String getEstimatedDepartureTime() {
        return estimatedDepartureTime;
    }
    public void setEstimatedDepartureTime(String estimatedDepartureTime) {
        this.estimatedDepartureTime = estimatedDepartureTime;
    }
    public List<String> getRoomStatus() {
        return roomStatus;
    }
    public void setRoomStatus(List<String> roomStatus) {
        this.roomStatus = roomStatus;
    }
    public List<Long> getHallIds() {
        return hallIds;
    }
    public void setHallIds(List<Long> hallIds) {
        this.hallIds = hallIds;
    }
    public List<Long> getFloorIds() {
        return floorIds;
    }
    public void setFloorIds(List<Long> floorIds) {
        this.floorIds = floorIds;
    }


    @Override
    public MeituanResponse<GetAvailableRoomsResponse> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<GetAvailableRoomsResponse>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "GetAvailableRoomsRequest{" + "hotelId=" + hotelId + "," + "roomTypeIds=" + roomTypeIds + "," + "estimatedArriveTime=" + estimatedArriveTime + "," + "estimatedDepartureTime=" + estimatedDepartureTime + "," + "roomStatus=" + roomStatus + "," + "hallIds=" + hallIds + "," + "floorIds=" + floorIds + "}";
    }
}
